【Dragon Crashers Sample】SpriteSharp

July 11, 2022


Unity公式サンプルDragon Crashersを読み解く

概要

タイトルから先に進むと、タイムラインの演出が再生されます 序盤に木と蜘蛛が手前が被写界深度のエフェクトが掛かったようにぼやけて表示されます 5CB9D1B02E2656CE323FACC928978836

この木は Sprite Shape Renderer で描画されています Sprite Shape Controller でブラーを掛けてぼやかしています

09E3834B4AE8890E38E693D4CB5065F9

Sprite Sharp

Sprite(画像)を自分で作成したパスに沿ってタイリングして描画する手法

Sprite Sharp Controller の Edit Spline を押して形を変更してみます

2D178CE14B372A75A41C69DC44C9B8CC

SceneEditorから木のポイントを自由に動かしてみます

Tangent Mode が Linear になっているため、ポイントとポイントを直線で結びつけてその中は指定された画像が描画されます

真ん中のContinuousはベジェ曲線で形を作ることができる 一番右のBrokenはポイント同士の曲線それぞれが切り離された調整ができるようになる

Unityの公式が動画含めとてもわかり易いです https://blog.unity.com/ja/technology/intro-to-2d-world-building-with-sprite-shape

塗りつぶしは Fill 項目のoffsetをいじると確認できます ここに指定できるテクスチャはAtlasではなく独立されていること、そして Wrap Mode を Repeat に設定することが必須のようです

配置されるテクスチャ自体がボケておりこれで被写界深度のような見た目を再現しているようです A7B3627016CE6E57D722F22BAEC4BE19 塗りつぶしテクスチャは真っ黒なシンプルなもの

DF19241B74A92A05E11F5B84449DB99A

SpriteShapeGeometryCache

SpriteShapeControllerの下に SpriteShapeGeometryCache コンポーネントがついてます 60CFC020F1A7A8D087910E4D2CEFAC15

SpriteShape に含まれるコンポーネントです。

再生時にポイントからジオメトリを求めるのではなく、予めEditor機能で生成されたデータをこのコンポーネントに記憶させ、再生時に利用することでCPUやメモリを優しくさせます

これを利用するためには、Sprite Shape Controller の Edit Spline を押したときに出てくる Cache Geometry にチェックを入れる必要があります

0B7F57279939C085BD919CF9B5AF69FF

チェック時、Editor機能で自動で AddComponent されます。 また、キャッシュを利用する場合は Fill Tessellation(C# Job) の利用はしないほうが良いとのことです。

Fill Tessellation(C# Job) を利用したときはマルチスレッドで塗りつぶしジオメトリ生成を計算するためパフォーマンスを向上させます。 利用しない場合はメインスレッドで処理されます。

キャッシュを利用する場合はそもそも生成処理の際に保存データを利用するためJobSystemで動的にデータを生成する必要がなく、無効化していたほうが都合が良い(Jobにチェックを入れないほうが便利なことがある) ようです

※ Tessellationとはある空間内のジオメトリを分割することで、Fill Tessellationは指定された塗りつぶし範囲を指定されたテクスチャで描画させるために適切な数を分割してくれる機能ということになります。